/*
 * Copyright 2007-2010 
 * This file is part of DP.
 *
 * DP is free software; you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 *
 * DP is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * DP; if not, write to the Free Software Foundation, Inc., 51 Franklin St,
 * Fifth Floor, Boston, MA 02110-1301 USA
 */
package PD.data;

import java.util.List;

/**
 * Interface for data set
 *
 * @author scsandra
 */
public interface NetworkDataset {

        /**
         * Constructs an exact copy of it self and returns it.
         *
         * @return Exact copy of itself
         */
        public NetworkDataset clone();

        /**
         * Every dataset has a name to allow the user to identify it
         * Returns the name of the data set.
         *
         * @return Name of the data set
         */
        public String getDatasetName();

        /**
         * Returns the number of rows in the data set.
         *
         * @return Number of rows
         */
        public int getNumberEdgesRows();

        public int getNumberNodesRows();

        /**
         * Sets the name of the dataset.
         *
         * @param Name of the dataset
         */
        public void setDatasetName(String name);

        /**
         * Returns the row of the data set indicated by the user with its index into the
         * list of rows.
         *
         * @param row Row index
         * @return PeakListRow
         */
        public Row getEdgesRow(int row);

        /**
         * Removes the row of the data set indicated by the user with its index into the
         * list of rows.
         *
         * @param row Row index
         */
        public void removeEdgesRow(Row row);

        /**
         * Returns the row of the data set indicated by the user with its index into the
         * list of rows.
         *
         * @param row Row index
         * @return PeakListRow
         */
        public Row getNodesRow(int row);

        /**
         * Removes the row of the data set indicated by the user with its index into the
         * list of rows.
         *
         * @param row Row index
         */
        public void removeNodesRow(Row row);

        /**
         * Returns all the rows in the data set.
         *
         * @return List with all the rows
         */
        public List<Row> getEdgesRows();

        /**
         * Returns all the rows in the data set.
         *
         * @return List with all the rows
         */
        public List<Row> getNodesRows();

        public void setNodesRow(Row row);

        public void setEdgesRow(Row row);

        public void setNodesRows(List<Row> Nodes);

        public void setEdgesRows(List<Row> Edges);

        public Row getNodesRowByID(int indexRow);

        public List<Row> getEdgesfromSourceID(int indexRow);

        public void removeNodesbyID(int id);

        public List<Row> getConnectedNodes(int ID);

        public boolean contains(int iD);

        public Row getEdgesRowByID(int indexRow);

        public void RemoveDesconnectedNodesAndEdges();
}
